package com.pkq.three;


import java.util.ArrayList;

/**
 * @author ピカチュウ(皮卡啾)
 * @date 2021/7/14 11:21
 * @Description: 30个人围成一圈，
 * 由第一个人数起，依次报数，数到第9人，便把他投入大海中，
 * 然后再从 他的下一个人数起，数到第9人，再将他投入大海中，如此循环地进行，直到剩下 15 个游客为止。
 * 问：哪些位置是将被扔下大海的位置？
 */
public class Ysfh {
    /**
     * @param total   总人数
     * @param drop    扔人的位置
     * @param surplus 剩余人数
     */
    public void sfh(int total, int drop, int surplus) {

        int rm = 0;
        ArrayList<Object> list = new ArrayList<>();

        for (int i = 1; i <= total; i++) {
            list.add(i);
        }
        System.out.println(list);

        while (list.size() > surplus) {
            rm += drop - 1;

            // 当 rm 超出集合长度时，求余重新计算位置
            if (rm >= list.size()) {
                rm %= list.size();
            }
            Object remove = list.remove(rm);
            System.out.println(list);
            System.out.println("删除了：" + remove);

        }
    }
}
